Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

безопасность при использовании глоб. переменных (maneger)
Author Message
maneger
Заглянувший



Joined: 14 Sep 2005
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Wed Sep 14, 2005 6:57 pm (написано за 3 секунды)
   Post subject: безопасность при использовании глоб. переменных
Reply with quote

Вопрос такой:

Как влияет использование глобальных переменных в скрипте на безопасность?

Если используються глобальные переменные это обязательно значит что низкая безопасность?

На сколько выгодно использовать глобальные перменные и на сколько невыгодно заменять их чемто другим?
Back to top
View user's profile Send private message
Алексей С.
Участник форума



Joined: 11 Nov 2004
Posts: 103
Карма: 1
   поощрить/наказать


PostPosted: Wed Sep 14, 2005 7:20 pm (спустя 22 минуты; написано за 20 секунд)
   Post subject:
Reply with quote

глобальный переменные в смысле в массиве $GLOBALS?
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Sep 14, 2005 7:39 pm (спустя 18 минут; написано за 36 секунд)
   Post subject:
Reply with quote

maneger wrote:
Если используються глобальные переменные это обязательно значит что низкая безопасность?
Нет, но это в принципе немного её снижает. Лучше использовать registeR_globals off, всё-таки
Back to top
View user's profile Send private message Send e-mail
Алексей Пешков
Участник форума



Joined: 16 Jun 2004
Posts: 76
Карма: 2
   поощрить/наказать

Location: Москва

PostPosted: Wed Sep 14, 2005 9:23 pm (спустя 1 час 44 минуты; написано за 2 минуты 6 секунд)
   Post subject:
Reply with quote

Использование глобальных переменных - плохой стиль, что говорит о сравнительно невысокой квалификации программиста. Можно сделать предположение, что о безопасности мало задумывались...
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Sep 15, 2005 9:37 am (спустя 12 часов 14 минут; написано за 3 минуты 27 секунд)
   Post subject:
Reply with quote

Алексей Пешков wrote:
Использование глобальных переменных - плохой стиль
а если это наиболее простой путь? Скажем, генерация для страницы ключевых слов и заголовка: отдельные фрагменты страницы по-разному заполняют эти поля. Можно, конечно, замутить какую-нибудь функцию с внутренней static-переменной, но, имхо, ненужный изврат.
(register_globals off , разумеется!)
Back to top
View user's profile Send private message
Алексей Пешков
Участник форума



Joined: 16 Jun 2004
Posts: 76
Карма: 2
   поощрить/наказать

Location: Москва

PostPosted: Thu Sep 15, 2005 3:22 pm (спустя 5 часов 44 минуты; написано за 2 минуты 57 секунд)
   Post subject:
Reply with quote

Если функция генерации метатегов САМА вызывает необходимые ей фрагменты, то не нужны ни глобальные, ни прочие промежуточные переменные.
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Sep 15, 2005 3:45 pm (спустя 23 минуты; написано за 1 минуту 7 секунд)
   Post subject:
Reply with quote

Алексей Пешков wrote:
САМА вызывает необходимые ей фрагменты
никак не получается без лишних запросов к БД.
Back to top
View user's profile Send private message
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Thu Sep 15, 2005 4:21 pm (спустя 35 минут; написано за 8 минут 19 секунд)
   Post subject:
Reply with quote

Алексей Пешков wrote:
Использование глобальных переменных - плохой стиль, ...
Стоит, вероятно, уточнить, что-же имелось ввиду. Использование register_globals on или просто переменных, видимых всему скрипту и всем процедурам. Для примера - совсем не использовать глобальные переменные никак не получится :) Массивы $_GET и $_PUT как ни крути - глобальны...
Опять-же стиль программирования, imho, не существует сам по себе. Он является "способом удовлетворения" каких-либо надобностей, как правило - читабельность кода и его модифицируемость. Если какой-то прием программирования затрудняет ту или иную надобность - есть повод объявить его "нестильным" :) Размахивая неаргументированно словом "стиль" и ссылаясь при этом только на рекомендации с советом "не использовать..." можно уподобиться религиозному фанатику ;)
Back to top
View user's profile Send private message Send e-mail
Алексей Пешков
Участник форума



Joined: 16 Jun 2004
Posts: 76
Карма: 2
   поощрить/наказать

Location: Москва

PostPosted: Fri Sep 16, 2005 10:16 am (спустя 17 часов 55 минут; написано за 10 минут 54 секунды)
   Post subject:
Reply with quote

Под "стилем" я подразумеваю строгое следование структурному и объектному подходу.
Не буду рассказывать про пространства имен, про инкапсуляцию данных, про register_globals...

1) Самый явный недостаток передачи данных через глобальные переменные -- недокументированная в коде взаимозависимость порядка выполнения несвязанных между собой частей системы.

2) Разделение между разными модулями инициализации, модификации и использования одних и тех же данных опасно по простой причине: ошибка в одном маленьком модуле может привести за собой непредсказуемый каскад сбоев в самых разных частях программы. Это называется нарушение безопасности системы.

Кстати, в языке PHP нет оператора "goto", о котором в прошлом веке тоже велись "религиозные войны"...
Back to top
View user's profile Send private message Send e-mail
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Fri Sep 16, 2005 2:47 pm (спустя 4 часа 30 минут; написано за 11 минут 26 секунд)
   Post subject:
Reply with quote

Я не очень понимаю какое отношение имеет все это к первому посту темы :).
Алексей Пешков
Приведенные вами высказвания, в общем случае, справедливы, но все равно, не хватает конкретики. Можно, к примеру, порешать задачу, описанную Maus:
Есть страничка, набранная из несколько "случайных" статей. Необходимо сформировать для нее разумный список индексов. Насколько я понял, предлагается отрабатывать статьи независимо друг от друга, вываливая встретившиеся индексы в глобальный массив и по отработке всех статей - вывалить эти индексы в нужное место. (Надеюсь я не сильно много придумал "от себя").
Как такое решение "снижает безопасность системы"?
Какое решение, учитывая "объектный подход", можете предложить вы?
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Sep 16, 2005 4:08 pm (спустя 1 час 21 минуту; написано за 1 минуту 16 секунд)
   Post subject: в каждой шутке есть доля шутки
Reply with quote

Кстати, да!
В GLOBALS лежит переменная, являющаяся объектом.
Это правильный подход или нет ? (:
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Tue Sep 20, 2005 6:41 pm (спустя 4 дня 2 часа 32 минуты; написано за 48 секунд)
   Post subject:
Reply with quote

Часто это даже единственный подход.
(Вариант создания статической функции, возвращающей ссылку, я отбрасываю потому что это, по сути, то же самое, а многословность кода увеличивается.)
Back to top
View user's profile Send private message Send e-mail
Алексей Пешков
Участник форума



Joined: 16 Jun 2004
Posts: 76
Карма: 2
   поощрить/наказать

Location: Москва

PostPosted: Thu Oct 13, 2005 10:37 pm (спустя 23 дня 3 часа 56 минут)
   Post subject:
Reply with quote

c2.com/cgi/wiki?GlobalVariablesAreBad
Back to top
View user's profile Send private message Send e-mail
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Thu Oct 20, 2005 6:07 pm (спустя 6 дней 19 часов 30 минут; написано за 12 минут 5 секунд)
   Post subject:
Reply with quote

А вот и цитата оттуда
Code (any language): скопировать код в буфер обмена
... If something really should be a global, make it a global...
Статья содержит пример перехода от "глобальности" к "ее отсутствию", так что "объектный" алгоритм решения задачи Maus'а мне примерно понятен, однако остается непонятной отношение этих решений к "безопасности".
imho #1 - тема несколько отходит от "безопасности", которая интересовала автора топика :)
imho #2 - Единственное "разумное" возражение против использования глобальных переменных в статье (своими словами) - в этих переменных легко запутаться. С таким положением очень сложно не согласиться :), особенно если переменных действительно ТАК много, чтобы в них путаться... Лучше быть богатым и здоровым, чем бедным и больным. Все остальные возражения - скорее причуды реализации PHP...
imho #3 - отсутствие оператора GOTO означает позицию авторов PHP в той "религиозной войне", а также означает навязывание своей позиции пользователям языка. Была пара случаев, когда goto позволил бы мне написать на пару строк меньше и несколько понятнее. ):
imho #4 - наличие чувства меры - обязательное условие хорошего стиля программирования :)) Можно ведь и классов наплодить столько, что путаться придется уже в их описаниях...
Back to top
View user's profile Send private message Send e-mail
Алексей Пешков
Участник форума



Joined: 16 Jun 2004
Posts: 76
Карма: 2
   поощрить/наказать

Location: Москва

PostPosted: Thu Oct 20, 2005 8:10 pm (спустя 2 часа 3 минуты; написано за 2 минуты 56 секунд)
   Post subject:
Reply with quote

В языке Java нет глобальных переменных и функций. Этому есть причины, более веские, чем "чувство меры".
Back to top
View user's profile Send private message Send e-mail
wolandino
Заглянувший



Joined: 05 Aug 2005
Posts: 16
Карма: 3
   поощрить/наказать


PostPosted: Sun Oct 23, 2005 6:25 pm (спустя 2 дня 22 часа 14 минут; написано за 24 секунды)
   Post subject:
Reply with quote

хм, www.phpguru.org/article.php?ne_id=72
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Oct 24, 2005 11:20 am (спустя 16 часов 54 минуты; написано за 1 минуту 40 секунд)
   Post subject:
Reply with quote

wolandino
Но там все же сказано, что использовать это (подмену $_SERVER['SERVER_NAME']) для эксплойта практически нереально
Back to top
View user's profile Send private message
wolandino
Заглянувший



Joined: 05 Aug 2005
Posts: 16
Карма: 3
   поощрить/наказать


PostPosted: Mon Oct 24, 2005 12:25 pm (спустя 1 час 5 минут; написано за 22 секунды)
   Post subject:
Reply with quote

Maus
практически!=абсолютно
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML